import http from '@/utils/request'
import type { AxiosPromise } from 'axios'

// 支付有礼活动接口定义
export interface PoliteActivityItem {
  id?: number
  politeName?: string // 活动名称
  signTime?: string // 报名时间
  time?: string // 活动时间
  content?: string // 活动内容
  shops?: number // 店铺数
  products?: number // 商品数
  state?: number // 活动状态 0-报名未开始 1-报名进行中 2-活动未开始 3-活动进行中 4-活动已结束
  createdAt?: string
  updatedAt?: string
}

export interface PoliteActivityListParams {
  politeName?: string // 活动名称
  page?: number
  pageSize?: number
  state?: number // 活动状态 0-报名未开始 1-报名进行中 2-活动未开始 3-活动进行中 4-活动已结束
}

export interface PoliteActivityListResponse {
  list: PoliteActivityItem[]
  total: number
}

// 支付有礼活动查询
export function getPoliteData(
  data: PoliteActivityListParams
): AxiosPromise<PoliteActivityListResponse> {
  return http.post({
    url: '/polite/getAll',
    data,
  })
}

// 详情
export function getPoliteDetail(
  data: { id: number }
): AxiosPromise<PoliteActivityItem> {
  return http.post({
    url: '/polite/getById',
    data,
  })
}

// 查询所有优惠券
export function getPoliteCoupon(
  data: any
): AxiosPromise<any> {
  return http.post({
    url: '/polite/getAllActivity',
    data,
  })
}

// 添加
export function addPoliteActivity(
  data: PoliteActivityItem
): AxiosPromise<PoliteActivityItem> {
  return http.post({
    url: '/polite/save',
    data,
  })
}

// 更新
export function updatePoliteActivity(
  data: PoliteActivityItem
): AxiosPromise<PoliteActivityItem> {
  return http.post({
    url: '/polite/update',
    data,
  })
}

// 结束
export function endPoliteActivity(
  data: { id: number }
): AxiosPromise<void> {
  return http.post({
    url: '/polite/stop',
    data,
  })
}

// 删除
export function delPoliteActivity(
  data: { id: number }
): AxiosPromise<void> {
  return http.post({
    url: '/polite/delete',
    data,
  })
}

// 获取活动图表数据
export function getChartData(
  data: { id: number }
): AxiosPromise<any> {
  return http.post({
    url: '/polite/getData',
    data,
  })
}

// 统计页导出
export function exportPoliteData(
  data: { id: number }
): AxiosPromise<Blob> {
  return http.post({
    url: '/polite/excel_shop_detail',
    data,
    responseType: 'blob',
  })
}